class Solution {
public:
    int pre[200]={0};
    void init(int n){
        for(int i=0;i<n;i++){
            pre[i]=i;
        }
    }
    int find(int x){
        if(pre[x]==x) return x;
        else
        return pre[x]=find(pre[x]);
     }
     void join(int x,int y){
        if(find(x)!=find(y)){
            pre[find(x)]=find(y);
        }
     }
    int findCircleNum(vector<vector<int>>& isConnected) {
        int n=isConnected.size();
        set<int> sum;
        init(n);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(isConnected[i][j]==1)
                join(i,j);
            }
        }
        for(int i=0;i<n;i++){
            sum.insert(find(i));
        }
        return sum.size();
    }
};
